# 定义编译器和编译选项
CXX = g++
CXXFLAGS = -Wall -g

# 找到所有的源文件
SRC = $(wildcard *.cpp)

# 生成目标可执行文件列表
TARGETS = $(SRC:.cpp=)

# 默认目标
all: $(TARGETS)
	@$(MAKE) run  

# 对于每个源文件，生成相应的可执行文件
%: %.cpp
	$(CXX) $(CXXFLAGS) -o $@ $<

# 执行所有可执行文件
run: $(TARGETS)
	@for exe in $(TARGETS); do \
		echo "Running $$exe..."; \
		./$$exe; \
	done

# 处理文档生成
OBJ = $(wildcard *.tex)

doc: $(OBJ)
	@pdflatex $^
	@bibtex main.aux
	@pdflatex $^
	@pdflatex $^

.PHONY: all clean doc run
clean:
	rm -f *.aux *.bbl *.blg *.log *.run.xml *.pdf *.synctex.gz main.bbl main-blx.bib 
	rm -f $(TARGETS)  
	latexmk -c